﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sispe.Entities;

namespace Sispe.Repository
{
    public interface ITrabajadorRepository
    {
        List<TRABAJADOR> GetAllFromTrabajador();

        //BUSQUEDAS DETALLADAS DEL TRABAJADOR POR MEDIO DE PERSONA.....

        //busquedas unitarias....
        List<TRABAJADOR> GetAllFromPersonaByDni(string dni);
        List<TRABAJADOR> GetAllFromPersonaByApellidos(string apellidos);
        List<TRABAJADOR> GetAllFromPersonaByNombres(string nombres);
        List<TRABAJADOR> GetAllFromPersonaBySexo(string sexo);
        List<TRABAJADOR> GetAllFromPersonaByEstadoCivil(string estCivil);

        //busquedas dobles.....
        List<TRABAJADOR> GetAllFromPersonaByDniAndNombres(string dni, string nombres);
        List<TRABAJADOR> GetAllFromPersonaByDniAndApellidos(string dni, string apellidos);
        List<TRABAJADOR> GetAllFromPersonaByDniAndSexo(string dni, string sexo);
        List<TRABAJADOR> GetAllFromPersonaByDniAndEstadoCovil(string dni, string estCivil);
        List<TRABAJADOR> GetAllFromPersonaByNombreAndApellidos(string nombres, string apellidos);
        List<TRABAJADOR> GetAllFromPersonaByNombreAndSexo(string nombres, string sexo);
        List<TRABAJADOR> GetAllFromPersonaByNombreAndEstadoCivil(string nombres, string estCivil);
        List<TRABAJADOR> GetAllFromPersonaByApellidosAndSexo(string apellidos, string sexo);
        List<TRABAJADOR> GetAllFromPersonaByApellidosAndEstadoCivil(string apellidos, string estCivil);
        List<TRABAJADOR> GetAllFromPersonaBySexoAndEstadoCivil(string sexo, string estCivil);

        //busquedas triples......
        List<TRABAJADOR> GetAllFromPersonaByDniNombresAndApellidos(string dni, string nombres, string apellidos);
        List<TRABAJADOR> GetAllFromPersonaByDniNombresAndSexo(string dni, string nombres, string sexo);
        List<TRABAJADOR> GetAllFromPersonaByDniNombresAndEstadoCivil(string dni, string nombres, string estCivil);
        List<TRABAJADOR> GetAllFromPersonaByNombresApellidosAndSexo(string nombres, string apellidos, string sexo);
        List<TRABAJADOR> GetAllFromPersonaByNombresApellidosAndEstadoCivil(string nombres, string apellidos, string estCivil);
        List<TRABAJADOR> GetAllFromPersonaByApellidosSexoAndDni(string apellidos, string sexo, string dni);
        List<TRABAJADOR> GetAllFromPersonaByApellidosSexoAndEstadoCivil(string apellidos, string sexo, string estCivil);
        List<TRABAJADOR> GetAllFromPersonaBySexoEstadoCivilAndDni(string sexo, string estCivil, string dni);
        List<TRABAJADOR> GetAllFromPersonaBySexoEstadoCivilAndNombre(string sexo, string estCivil, string nombres);

        //busquedas cuadruples......
        List<TRABAJADOR> GetAllFromPersonaByDniNombresApellidosAndSexo(string dni, string nombres, string apellidos, string sexo);
        List<TRABAJADOR> GetAllFromPersonaByDniNombresApellidosAndEstadoCivil(string dni, string nombres, string apellidos, string estCivil);
        List<TRABAJADOR> GetAllFromPersonaByDniNombresSexoAndEstadoCivil(string dni, string nombres, string sexo, string estCivil);
        List<TRABAJADOR> GetAllFromPersonaByNombresApellidosSexoAndEstadoCivil(string nombres, string apellidos, string sexo, string estCivil);
        List<TRABAJADOR> GetAllFromPersonaByApellidosSexoEstadoCivilAndDni(string apellidos, string sexo, string estCivil, string dni);

        //busqueda completa.....
        List<TRABAJADOR> GetAllFromPersonaByDniNombresApellidosSexoAndEstadCivil(string dni, string nombres, string apellidos, string sexo, string estCivil);


        //BUSQUEDAS DETALLADAS DEL TRABAJADOR POR MEDIO DE TRABAJADOR.....

        //busquedas unitarias....
        List<TRABAJADOR> GetAllFromTrabajadorByNEdad(string nEdad);
        List<TRABAJADOR> GetAllFromTrabajadorByRPensionario(string rPensionario);
        List<TRABAJADOR> GetAllFromTrabajadorBySocio(string socio);
        List<TRABAJADOR> GetAllFromTrabajadorByUbigeo(string ubigeo);
        List<TRABAJADOR> GetAllFromTrabajadorByRecomendable(string recomendable);
        List<TRABAJADOR> GetAllFromTrabajadorBySindicato(string sindicato);

        //busquedas dobles....
        List<TRABAJADOR> GetAllFromTrabajadorByNEdadAndRPensionario(string nEdad, string rPensionario);
        List<TRABAJADOR> GetAllFromTrabajadorByNEdadAndSocio(string nEdad, string socio);
        List<TRABAJADOR> GetAllFromTrabajadorByNEdadAndUbigeo(string nEdad, string ubigeo);
        List<TRABAJADOR> GetAllFromTrabajadorByRPensionarioAndSocio(string rPensionario, string socio);
        List<TRABAJADOR> GetAllFromTrabajadorByRPensionarioAndUbigeo(string rPensionario, string ubigeo);
        List<TRABAJADOR> GetAllFromTrabajadorBySocioAndUbigeo(string socio, string ubigeo);

        //busquedas triples.....
        List<TRABAJADOR> GetAllFromTrabajadorByNEdadRPensionarioAndSocio(string nEdad, string rPensionariom, string socio);
        List<TRABAJADOR> GetAllFromTrabajadorByNEdadRPensionarioAndUbigeo(string nEdad, string rPensionariom, string ubiego);
        List<TRABAJADOR> GetAllFromTrabajadorByNEdadSocioAndUbigeo(string nEdad, string socio, string ubigeo);
        List<TRABAJADOR> GetAllFromTrabajadorByRPensionarioSocioAndUbigeo(string rPensionario, string socio, string ubigeo);

        //busqueda completa....
        List<TRABAJADOR> GetAllFromTrabajadorByNEdadRPensionarioSocioAndUbigeo(string nEdad, string rPensionariom, string socio, string ubigeo);


        void AddTrabajador(TRABAJADOR trabajador);
        void UpdateTrabajador(TRABAJADOR trabajador);
        TRABAJADOR GetFromTrabajadorById(Int32 id);

        TRABAJADOR DownloadCurriculum(Int32 id);

    }
}
